package com.yfp.machine.service;

import com.yfp.common.core.domain.R;
import com.yfp.machine.domain.MachineAd;
import com.yfp.machine.domain.dto.MachineAdDto;
import com.yfp.machine.domain.vo.MachineAdAddVo;
import com.yfp.machine.domain.vo.MachineAdVo;

import java.util.List;

/**
 * (MachineAd)表服务接口
 *
 * 
 * @since 2023-12-16 21:24:25
 */
public interface MachineAdService {



    /**
     * 推送设备广告
     *
     * @param  machineAd 设备广告
     * @param machineId   设备id
     * @return boolean
     */
    boolean pushMachineAd(MachineAd machineAd, String machineId);

    /**
     * 按设备id查询设备广告列表
     *
     * @param machineId 机器id
     * @return {@link List}<{@link MachineAd}>
     */
    List<MachineAd> queryMachineAdvertisingListByMachineId(String machineId);

    /**
     * 获取设备广告列表
     *
     * @param machineAdVo 机器广告
     * @return {@link List}<{@link MachineAdDto}>
     */
    List<MachineAdDto> queryMachineAdVoByPage(MachineAdVo machineAdVo);

    /**
     * 新增设备广告
     *
     * @param machineAdVo 机器广告
     * @return boolean
     */
    R<String> addMachineAd(MachineAdAddVo machineAdVo);


    /**
     * 通过设备广告id查询设备广告详情
     *
     * @param machineAdId 机器广告id
     * @return {@link MachineAdDto}
     */
    MachineAdDto queryMachineAdInfoById(Long machineAdId);

    /**
     * 删除设备广告
     *
     * @param machineAdId 机器广告id
     * @return boolean
     */
    boolean deleteMachineAd(Long machineAdId);

    /**
     * 播放/暂停设备广告
     *
     * @param machineAdId 设备广告id
     * @param palyStatus      正在播放
     * @return boolean
     */
    boolean playMachineAd(Long machineAdId, Integer palyStatus);

    /**
     * 批量设备推送广告
     *
     * @param machineAdId 机器广告id
     * @return boolean
     */
    boolean adPushMachineAd(Long machineAdId);

    /**
     * 推送单个设备广告
     *
     * @param machineAdId 机器广告id
     * @param machineId   机器id
     * @return boolean
     */
    boolean pushAd(String machineAdId, String machineId);
}
